using System;

namespace CellarDoor.Gui
{
    /// <summary>
    /// The states an element can have.
    /// </summary>
    public enum UiVisualState
    {
        /// <summary>
        /// Default element state
        /// </summary>
        Default,

        /// <summary>
        /// Disabled element state
        /// </summary>
        Disabled,

        /// <summary>
        /// Element is up (is not pressed)
        /// </summary>
        Up,

        /// <summary>
        /// Element is down e.g. clicked
        /// </summary>
        Down,
    }

    /// <summary>
    /// An enum to indicate what axis should be used to scale an object.
    /// </summary>
    public enum UiScaleAxis
    {
        /// <summary>
        /// Indicates to scale from x-axis.
        /// </summary>
        X,

        /// <summary>
        /// Indicates to scale from y-axis.
        /// </summary>
        Y,

        /// <summary>
        /// Indicates to scale from x and from y-axis.
        /// </summary>
        Both,

        /// <summary>
        /// Indicates that no scaling should happen.
        /// </summary>
        None,
    }

    [Flags]
    public enum UiAlignStyle
    {
        None = 0,
        HorizontalNone = 512,
        VerticalNone = 1024,
        Top = 1,
        Bottom = 2,
        Left = 4,
        Right = 8,
        Middle = 16,
        OutsideLeft = 32,
        OutsideRight = 64,
        OutsideTop = 128,
        OutsideBottom = 256
    }

    public enum UiDockStyles
    {
        /// <summary>
        /// Item is free and not docked.
        /// </summary>
        None,

        /// <summary>
        /// Item docks to the parents top edge.
        /// </summary>
        Top,

        /// <summary>
        /// Item docks to the parents bottom edge.
        /// </summary>
        Bottom,

        /// <summary>
        /// Item docks to the parents left edge.
        /// </summary>
        Left,

        /// <summary>
        /// Item docks to the parents right edge.
        /// </summary>
        Right,

        /// <summary>
        /// Item fills the parents area.
        /// </summary>
        Fill
    }

    public enum UiOrientation
    {
        /// <summary>
        /// Horizontal Bar
        /// </summary>
        Horizontal,

        /// <summary>
        /// Vertical Bar
        /// </summary>
        Vertical
    }

    public enum UiAutoSizeStyle
    {
        /// <summary>
        /// No autosize
        /// </summary>
        None = 0,

        /// <summary>
        /// Elements area grows only
        /// </summary>
        GrowOnly = 1,

        /// <summary>
        /// Elemets area grows and shrinks
        /// </summary>
        GrowAndShrink = 2
    }
}